package cn.com.surker.order.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 微信下单已下单数据
 * </p>
 *
 * @author admin
 * @since 2022-04-13
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class WechatOrder implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 下单人员
     */
    private Long uid;

    /**
     * 下单人员名
     */
    private String username;

    /**
     * 下单人员电话
     */
    private String phone;

    /**
     * 微信appid
     */
    private String appid;

    /**
     * 微信openid
     */
    private String openid;

    /**
     * 订单ID(对应ERP U_CODE)
     */
    private String orderId;

    /**
     * 任务单CODE
     */
    private String taskCode;

    /**
     * 施工单位
     */
    @NotEmpty(message = "请输入施工单位")
    private String units;

    /**
     * 合同
     */
	@NotNull(message = "请选择合同")
    private Long conId;

    /**
     * oa销售合同ID
     */
    private Long contractId;
    /**
     * 合同编号
     */
	@NotEmpty(message = "请输入合同编号")
    private String conCode;

    /**
     * 合同名
     */
	@NotEmpty(message = "请输入合同名")
    private String conName;

	/**
	 * 合同类型,1:商砼;2:砂浆
	 */
	private Integer conType;

	/**
	 * 合同备注,用于接收施工方备注信息
	 */
	private String conRemark;

    /**
     * 公司id
     */
//	@NotNull(message = "请选择公司id")
    private Long orgId;

    /**
     * 公司名
     */
//	@NotEmpty(message = "请输入公司名")
    private String orgName;

    /**
     * 数据源id
     */
//	@NotNull(message = "请选择数据源")
    private Long dsId;

    /**
     * 施工部位
     */
	@NotEmpty(message = "请输入施工部位")
    private String site;

    /**
     * 砼强度id
     */
    private Long strengthId;

    /**
     * 砼强度
     */
	@NotEmpty(message = "请输入砼强度")
    private String strength;

    /**
     * 特性要求
     */
    private String techRequirements;

	/**
	 * 浇筑方式id
	 */
	private Long castingModeId;

	/**
	 * 浇筑方式类型（0：不需要泵送设备；1：需要泵送设备）
	 */
	private Integer castingModeType;

    /**
     * 浇筑方式
     */
	@NotEmpty(message = "请选择浇筑方式")
    private String castingMode;

	/**
	 * 泵送设备id
	 */
	private String devicePumpId;
	/**
	 * 泵送设备
	 */
	private String devicePump;

    /**
     * 泵送设备种类id
     */
    private String pumpTypeId;

	/**
	 * 泵送设备种类
	 */
	private String pumpType;

	/**
	 * 泵送设备规格id
	 */
	private String pumpNormsId;
    /**
     * 泵送设备规格
     */
    private String pumpNorms;

    /**
     * 计划方量
     */
	@NotNull(message = "请输入计划方量")
    private Double stere;

    /**
     * 坍落度
     */
    @NotNull(message = "请填写坍落度")
	private String slump;

    /**
     * 计划开盘时间
     */
	@JsonFormat(pattern = "yyyy-MM-dd hh:mm",timezone="GMT+8")
	@DateTimeFormat(pattern="yyyy-MM-dd hh:mm")
	@NotNull(message = "选择计划开盘时间")
    private String planTime;

	/**
	 * 审核状态，-1：被1级别审核拒绝，-2被2级审核拒绝；0：已通过；1：审核到了一级审核员，2：类同
	 */
	private Integer examineStatus;

    /**
     * 状态
     */
    private Integer status;

    /**
     * 创建人
     */
    private String creater;

    /**
     * 工地联系人
     */
    private String person;

    /**
     * 工地联系电话
     */
    private String buildPhone;

    /**
     * 工地地址
     */
    private String address;

    /**
     * 创建日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date createTime;

    /**
     * 更新人
     */
    private String updater;

    /**
     * 更新日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date updateTime;

    /**
     * 备注
     */
    private String remark;

	/**
	 * 用于表示是否是变更记录，在订单页面的查询接口中使用,0表示正常订单，1表示变更记录
	 */
	@TableField(exist = false)
    private Integer isChange;

	/**
	 * 用于表示该订单是否有变更记录，在订单页面查询接口中使用，0表示正常订单，1表示有变更记录
	 */
	@TableField(exist = false)
	private Integer hasChanges;

    @TableField(exist = false)
	private Long oaStrengthId;
    /**
     * 特性要求ID
     */
    @TableField(exist = false)
    private String techIds;
}
